package com.itheima;

import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Method;
import java.lang.reflect.Proxy;
import java.util.Set;

public class ProxyUtil {

    static Set<String> methods = Set.of(
            "login",
            "deleteUsers",
            "selectUsers"
    );
    
    public static UserService createProxy(UserService userService){
        return (UserService) Proxy.newProxyInstance(ProxyUtil.class.getClassLoader(),
                new Class[]{UserService.class}, new InvocationHandler() {
                    @Override
                    public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {

                        // 完成指定方法的耗时统计及方法调用
                        return null;
                    }
                });
    }

    /**
     * 打印方法执行时间
     * @param method 方法
     * @param startTime 开始时间戳，单位：毫秒
     * @param endTime 结束时间戳，单位：毫秒
     */
    private static void printTimeDuration(String method, long startTime, long endTime) {
        System.out.printf("%s方法执行耗时：%.1fs%n", method, (endTime - startTime) / 1000.0);
    }
}
